package com.zhihuishu.micro.course.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.github.abel533.mapper.Mapper;
import com.zhihuishu.micro.course.model.CcCourse;
import com.zhihuishu.micro.course.model.CourseLabel;
import com.zhihuishu.micro.course.model.Label;

/**
 * 课程分类数据访问接口
 * 
 * @author zhanglikun
 * @date 2015年9月21日 下午4:25:45
 */
public interface LabelMapper extends Mapper<CourseLabel> {

    Label get(int labelId);

    /**
     * 根据父ID，查询所属子分类ID列表
     * 
     * @param parentId
     * @return
     */
    Integer[] list(int parentId);

    /**
     * 查询课程分类集合
     * 
     * @param courseId
     * @return
     */
    List<CourseLabel> listByCourse(long courseId);

    /**
     * 创建课程分类关系数据
     * 
     * @param cl
     */
    void saveCourseLabel(CourseLabel cl);

    /**
     * 更新课程分类关系数据
     * 
     * @param cl
     */
    void updateCourseLabel(CourseLabel cl);

    /**
     * 查询标签
     * 
     * @discription
     * @author jipeng
     * @created 2016年4月27日 下午5:48:08
     * @param categoryIds
     * @return
     */
    List<String> findCourseLabelByIds(@Param("categoryIds")
    List<Integer> categoryIds);

    /**
     * 更新CC表中的标签
     * 
     * @discription
     * @author jipeng
     * @created 2016年4月28日 下午6:03:44
     * @param courseId
     * @param string
     * @param categoryContext
     */
    void updatCCCourseLable(@Param("courseId")
    Long courseId, @Param("categoryIds")
    String string, @Param("categoryContext")
    String categoryContext);

    /**
     * 查询CC表中的标签
     * 
     * @discription
     * @author jipeng
     * @created 2016年4月28日 下午6:03:38
     * @param courseId
     * @return
     */
    CcCourse findCCCourseLableByCourseId(Long courseId);
    /**
     * 根据课程列表查询课程分类集合
     * @param courseIds
     * @return
     */
    List<CourseLabel> listByCourseIds(@Param("courseIds") List<Long> courseIds);
    /**
     * @Description:查询所有课程分类
     *  @date:@2016年12月14日上午11:20:12
     *  @author:嵇鹏
     *  @Param:
     *  @retuen:List<Label>
     */
    List<Label> listAllLables();

}
